As known, in the field of database design, there are several design aspects that are considered. One design aspect is the collection of things, e.g., objects that are relevant to the database. For example, an object may comprise a database table. An attribute is a description or quantitative characteristic of a database object. An example of an attribute would be a database column and its characteristics like its datatype and whether or not is can be null. A primary key is an attribute (or combination of attributes) that uniquely identifies an instance of a table row. A primary key cannot be null and the value assigned to a primary key should not change over time. A logical link between two objects defines a relationship and may be used to represent a business rule. An example relationship between entities include: a “one-to-many” type in which one instance of the parent object relates to many instances of a child object. A “foreign key” exists when the primary key of a parent object exists in a child object. A foreign key requires that values must be present in the parent object before like values may be inserted in the child object.
Other objects may include things created in the database, e.g., tables, triggers, indexes, some of which may be subject to constraints.
While systems exist that only evaluates best practices the currently-available database systems provide no mechanism to actively understand, assess, and improve a database score.